package gamecfg

import (
	"encoding/json"
	"fmt"
	"github.com/gogf/gf/v2/os/gctx"
	"github.com/gogf/gf/v2/os/glog"
	"xr-game-server/core/xrjson"
)

var itemMap = make(map[uint64]*ItemCfg)

func initItem() {
	xrjson.RegLoadJsonHandler("item.json", loadItem)
}

// ItemCfg 物品表配置,如果物品不复杂，可以作为背包表
type ItemCfg struct {
	Id   uint64 `json:"id"`
	Name string `json:"name"`
	//处理类型
	ItemHandler uint32 `json:"itemHandler"`
	//背包使用类型接口
	PropHandler uint32 `json:"propHandler"`
	PropParam   string `json:"propParam"`
}

func loadItem(jsonData string) {
	err := json.Unmarshal([]byte(jsonData), &itemMap)
	if err != nil {
		panic(fmt.Errorf("%v 文件加载错误 %v", jsonData, err))
	}
	glog.Warningf(gctx.New(), "%s数据加载成功,长度:%v", jsonData, len(itemMap))
}

func GetItemById(itemId uint64) *ItemCfg {
	item, ok := itemMap[itemId]
	if !ok {
		return nil
	}
	return item
}

func (receiver *ItemCfg) GetPropParam() []uint64 {
	var ret []uint64
	json.Unmarshal([]byte(receiver.PropParam), &ret)
	return ret
}
